package com.example.demo.mapper;

import com.example.demo.model.OrderInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface SellerOrderMapper {
    /**
     * 获取卖家的订单列表
     * @param sellerId 卖家ID
     * @param status 订单状态（可选）
     * @return 订单列表
     */
    List<OrderInfo> getSoldOrders(@Param("sellerId") Integer sellerId, @Param("status") String status);

    List<OrderInfo> getSoldOrdersComment(@Param("sellerId") Integer sellerId, @Param("status") String status);

    /**
     * 获取订单详情
     * @param orderNo 订单号
     * @return 订单详情
     */
    OrderInfo getOrderDetail(@Param("orderNo") String orderNo);

    /**
     * 根据订单号查询订单基本信息
     * @param orderNo 订单号
     * @return 订单信息
     */
    OrderInfo getOrderByOrderNo(@Param("orderNo") String orderNo);

    /**
     * 更新订单状态和快递信息
     * @param order 订单信息
     * @return 影响行数
     */
    int updateOrderStatus(OrderInfo order);

    /**
     * 更新订单删除标记
     * @param order 订单信息
     * @return 影响行数
     */
    int updateOrderDelete(OrderInfo order);

    /**
     * 获取订单数量统计
     * @param sellerId 卖家ID
     * @return 各状态订单数量
     */
    List<Map<String, Object>> getOrderCount(@Param("sellerId") Integer sellerId);

    /**
     * 更新订单备注
     * @param order 订单信息
     * @return 影响行数
     */
    int updateOrderRemark(OrderInfo order);

    int cancelOrder(String orderNo, Integer sellerId, String reason);

    String getCancelReason(String orderNo, Integer sellerId);
}